package cn.aws360.boot.system.biz.service;

import cn.aws360.boot.data.api.pojo.request.PageQuery;
import cn.aws360.boot.data.api.pojo.response.PageResult;
import cn.aws360.boot.system.api.pojo.request.SysRoleDataWrite;
import cn.aws360.boot.system.api.pojo.request.SysRoleMenuWrite;
import cn.aws360.boot.system.api.pojo.request.SysRoleQuery;
import cn.aws360.boot.system.api.pojo.request.SysRoleWrite;
import cn.aws360.boot.system.api.pojo.response.SysRoleModel;
import cn.aws360.boot.system.biz.domain.SysRole;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * @author junnan
 */
public interface SysRoleService extends IService<SysRole> {

    /**
     * 新增角色
     *
     * @param sysRoleWrite 新增角色参数
     * @return 是否成功
     */
    Boolean add(SysRoleWrite sysRoleWrite);

    /**
     * 修改角色
     *
     * @param sysRoleWrite 修改角色参数
     * @return 是否成功
     */
    Boolean edit(SysRoleWrite sysRoleWrite);

    /**
     * 分配菜单权限
     *
     * @param sysRoleMenuWrite 修改角色菜单参数
     * @return 是否成功
     */
    Boolean assignMenu(SysRoleMenuWrite sysRoleMenuWrite);

    /**
     * 分配数据权限
     *
     * @param sysRoleDataWrite 修改角色数据参数
     * @return 是否成功
     */
    Boolean assignData(SysRoleDataWrite sysRoleDataWrite);

    /**
     * 删除角色
     *
     * @param ids 删除角色 ids
     * @return 是否成功
     */
    Boolean remove(String ids);

    /**
     * 查询角色详情
     *
     * @param id 查询角色 id
     * @return SysRoleModel
     */
    SysRoleModel detail(Integer id);

    /**
     * 查询角色列表
     *
     * @param sysRoleQuery 查询角色参数
     * @return List<SysRoleModel>
     */
    List<SysRoleModel> findList(SysRoleQuery sysRoleQuery);

    /**
     * 查询角色分页
     *
     * @param sysRoleQuery 查询角色参数
     * @param pageQuery    查询分页参数
     * @return PageResult<SysRoleModel>
     */
    PageResult<SysRoleModel> findPage(SysRoleQuery sysRoleQuery, PageQuery pageQuery);


}
